Boost
boost
arrow_drop_down
Boost.Sort

This Release

Steven Ross
Steven Ross
Author

BOOST SORT

Introduction

The goal of the Boost Sort Library is provide to the users, the most modern and fast sorting algorithms.

This library provides stable and not stable sorting algorithms, in single thread and parallel versions.

These algorithms do not use any other library or utility. The parallel algorithms need a C++11 compliant compiler.

Single Thread Algorithms

                  |       |                            |                               |                     |
Algorithm         |Stable |   Additional memory        |Best, average, and worst case  | Comparison method   |
------------------|-------|----------------------------|-------------------------------|---------------------|
spreadsort        |  no   |      key_length            | N, N sqrt(LogN),              | Hybrid radix sort   |
                  |       |                            | min(N logN, N key_length)     |                     |
pdqsort           |  no   |      Log N                 | N, N LogN, N LogN             | Comparison operator |
spinsort          |  yes  |      N / 2                 | N, N LogN, N LogN             | Comparison operator |
flat_stable_sort  |  yes  |size of the data / 256 + 8K | N, N LogN, N LogN             | Comparison operator |
                  |       |                            |                               |                     |
  • spreadsort is a novel hybrid radix sort algorithm, extremely fast, designed and developed by Steven Ross.

  • pdqsort is a improvement of the quick sort algorithm, designed and developed by Orson Peters.

  • spinsort is a stable sort, fast with random and with near sorted data, designed and developed by Francisco Tapia.

  • flat_stable_sort stable sort with a small additional memory (around 1% of the size of the data), provide the 80% - 90% of the speed of spinsort, being fast with random and with near sorted data, designed and developed by Francisco Tapia.

Parallel Algorithms

                      |       |                        |                              |
Algorithm             |Stable |   Additional memory    |Best, average, and worst case |
----------------------|-------|------------------------|------------------------------|
block_indirect_sort   |  no   |block_size * num_threads| N, N LogN , N LogN           |
sample_sort           |  yes  |        N               | N, N LogN , N LogN           |
parallel_stable_sort  |  yes  |      N / 2             | N, N LogN , N LogN           |
                      |       |                        |                              |
  • Sample_sort is a implementation of the Samplesort algorithm done by Francisco Tapia.

  • Parallel_stable_sort is based on the samplesort algorithm, but using a half of the memory used by sample_sort, conceived and implemented by Francisco Tapia.

  • Block_indirect_sort is a novel parallel sort algorithm, very fast, with low additional memory consumption, conceived and implemented by Francisco Tapia.

The block_size is an internal parameter of the algorithm, which in order to achieve the highest speed, changes according to the size of the objects to sort according to the next table. The strings use a block_size of 128.

                                |        |         |         |         |         |         |          |
object size (bytes)             | 1 - 15 | 16 - 31 | 32 - 63 | 64 - 127|128 - 255|256 - 511| 512 -    |
--------------------------------|--------|---------|---------|---------|---------|---------|----------|
block_size (number of elements) |  4096  |  2048   |   1024  |   768   |   512   |   256   |  128     |
                                |        |         |         |         |         |         |          |

Installation

- This library is **include only**. - Don't need to link with any static or dynamic library. Only need a C++11 compiler - Only need to include the file boost/sort/sort.hpp

Author and Copyright

This library is integrated in the [Boost Library](https://boost.org) .

Copyright 2017

Distributed under the Boost Software License, Version 1.0. (See http://www.boost.org/LICENSE_1_0.txt)

All Time

Francisco Tapia
Francisco Tapia
Contributor
Peter Dimov
Peter Dimov
Contributor
zerotypos-found
zerotypos-found
Contributor
Orson Peters
Orson Peters
Contributor
sdarwin
sdarwin
Contributor
Rene Rivera
Rene Rivera
Contributor
Edward Diener
Edward Diener
Contributor
Nikita Kniazev
Nikita Kniazev
Contributor
MinahilRaza
MinahilRaza
Contributor
Jeremy Fincher
Jeremy Fincher
Contributor
Casey Carter
Casey Carter
Contributor
Jonathan Emmett
Jonathan Emmett
Contributor